#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>

int main()
{
  pid_t id=fork();
  if(id == 0)
  {
    //子进程的代码执行区
    for(int i=0;i<5;i++)
    {
      printf("我是子进程，pid:%d\n",getpid());
    }
    //子进程休眠一下，让父进程完成任务。
    sleep(10);
    exit(99);
  }
  else if(id < 0)
  {
    perror("fork failed:");
    exit(-1);
  }
  //父进程在这里等待子进程，并且完成某些任务。
  
  int Status=0;
  while(1)
  {
   int tmp= waitpid(-1,&Status,WNOHANG);
   if(tmp == id)
   {
     printf("父进程已经等待完成\n");
     break;
   }
   else if(tmp==0)
   {
     printf("父进程正在完成某些任务\n");
     printf("父进程pid=%d\n",getpid());
     //让父进程休息两秒，避免printf占用太多资源.
     sleep(2);
   }
   else
   {
   perror("wait failed:");
   }
  }
    printf("子进程的exit code:%d,exit 状态%d\n",WEXITSTATUS(Status),WIFEXITED(Status));
      return 0;

}
